iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
Modern Web

.NET教我做人系列 第 2

Day 2 在開始打怪前先了解C#

  • 分享至 

  • xImage
  •  

經過昨天的開始讓我開始調整好我的時差,不然忘記分享給大家可能就糟糕了~可是今天好像是個睡覺的好日子,可不可以不要講嗎
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

對不起我錯了,下次不敢了~

那我還是乖乖地開始今天的鐵人賽好了,今天的話由於 .NET 的語言主要是由C#、 F#、 Visual這些來選寫,其他的我不太清楚,要是還有其他的希望知道的好朋友可以分享給我。那今天的話就會以較常使用的C#來做個介紹~~~

C#是甚麼能吃嗎?

要知道的一寫小知識

  • C# 是物件導向元件導向的程式設計語言
  • C# 是由 C 和 C++ 延伸的程式語言,去除了 C 和 C++ 的複雜性,有跟Java很像
  • 自動垃圾收集(Garbage Collection)意思是C#會把物件未使用的記憶體空間自動的回收
  • 統一個類型系統
  • 支援泛型(Generics)方法和類型,可提供更高的型別安全和效能
  • 可為 Null 的參考型別
  • 提供非同步作業(async/await)
  • 例外狀況和例外狀況處理(try、catch、finally)
  • LINQ 和Lambda 表達式

上面這些都很多都是在開發 C# 所需要的基本知識,由於這些東西不可能用一天就說明完,所以這些東西我都會在之後的鐵人賽來為大家做的說明。

.NET 框架 感覺就很複雜

我們再跑程式前看起來只要打個指令或按個開始鍵就好,但實際上程式執行起來沒有想像那麼簡單,尤其像 C# 這類高階語言更是麻煩。


(圖片來源: https://ithelp.ithome.com.tw/articles/10213175)

  1. C# 在 .NET上執行時,會透過common language runtime (CLR) 的虛擬機器元件(virtual machine component)和一組類別庫,用來管理執行中的 .NET程序。

  2. C# 在編譯上會把原始程式碼編譯成符合CLR規格的中繼語言(IL),通成都會以.dll或.exe的副檔名。中繼語言有時也稱為通用中間語言 (CIL) 或 Microsoft Intermediate Language (MSIL)。

  3. 在編譯成IL檔前,主要會先對原程式碼(C#)做一次的編譯,其中Managed 就是我們所會編譯成的另一種語言, Managed 程式碼有可以說是受到執行階段管理的程式碼。

  4. 在在編譯好IL後,接下來就會由CLR來接管編譯,CLR階段時會先將執行Just-in-time compilation(JIT) 編譯,以將 IL 程式碼轉換成原生電腦指令。其中CLR會提供與自動垃圾收集、例外狀況處理和資源管理相關的其他服務。

  5. 最後的經過JIT變異後就可以變成機器語言好讓電腦去執行我們程式碼所要做的指令了~~

超簡單版: 原始碼➜編譯器➜中繼語言(MSIL)➜CLR➜電腦看得懂的語言(Native code)

是不是很簡單,當初在看這裡時我根本不知道那些奇怪的 (英文單字) 的用處在幹嘛,但多看了慢慢有感覺好想知道它在幹甚麼,但有可能我在這裡的理解還不夠深,所以有不好的地方可提醒我喔!!!如果想更深入了解的話可以到下面連結看看。

.NET 和 C# 有甚麼關係?

C#是一個程式語言, .NET是一個平台的框架,目前有 Windows平台專屬的.NET Framework 與跨平台的 .NET Core 兩種

那今天的鐵人賽就到這裡了,大家再見我要去爬枕頭山了~~~

相關資料:


上一篇
Day 1 .NET壺裡到底賣了甚麼藥
下一篇
Day 3 再好的武器比不起先有好的環境
系列文
.NET教我做人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言